package gerenciadorprojetos.dao.hibernate;

import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.apache.log4j.Logger;
import gerenciadorprojetos.dao.*;
import java.util.ListIterator;
import org.springframework.dao.DataAccessException;

@SuppressWarnings("unchecked")
public class UsuarioDAO extends HibernateDaoSupport {

    Logger logger = Logger.getLogger(UsuarioDAO.class);

    public Usuario obtemUsuarioPorId(int id) {
        return (Usuario) this.getHibernateTemplate().get(Usuario.class, new Integer(id));
    }

    public Usuario obtemUsuarioPorApelido(String apelido) {
        List l = this.getHibernateTemplate().find("from Usuario o where o.apelidoUsuario=?", apelido);

        if (l.size() > 1) {
            logger.error("Mais de um usuario encontrado para o apelido " + apelido);
            return null;
        } else if (l.size() == 0) {
            logger.debug("Não existe usuario para este apelido "+apelido);
            return null;
        } else {
            return (Usuario) l.iterator().next();
        }
    }

    public List obtemUsuarios() {
        return this.getHibernateTemplate().find("from Usuario o");
    }

    public int obterMaxID() {
        int a = 0;
        List l = getHibernateTemplate().find("SELECT MAX(idUsuario) FROM Usuario");
        if (l != null) {
            ListIterator it = l.listIterator();

            if (it.hasNext()) {
                Object o = it.next();

                if (o != null) {
                    a = ((Integer) o).intValue();
                }
            }
        }

        return a;
    }
    
    public boolean addUsuario(Usuario u) {
        try {
            this.getHibernateTemplate().persist(u);
            return true;
        } catch (DataAccessException e) {
            logger.error("Erro ao adicionar o Usuario !");
            logger.error("Mensagem: "+e.getMessage());
            return false;
        } 
    } 
}
